package com.ysd.lis.controller.lab;

import com.ysd.common.Result;
import com.ysd.lis.annotation.LogDetail;
import com.ysd.lis.aspect.OperationType;
import com.ysd.lis.controller.pub.BaseController;
import com.ysd.lis.request.AddFeeItemParam;
import com.ysd.lis.request.ExtenFieldsValuePageRequestDto;
import com.ysd.lis.request.FeeItemPageParam;
import com.ysd.lis.service.lab.LabFeeItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author LiuQi
 * @since 2023-12-09
 */
@Api(tags = "申请项目")
@RestController
@RequestMapping("/lis/fee/item")
public class LabFeeItemController extends BaseController {

    @Autowired
    private LabFeeItemService labFeeItemService;

    @ApiOperation("获取申请项目")
    @GetMapping("/findFeeItemList")
    public Result findFeeItemList(FeeItemPageParam feeItemPageParam) {
        return labFeeItemService.findLabApplyItemList(feeItemPageParam);
    }

    @ApiOperation("获取申请项目")
    @GetMapping("/getFeeItemListByRptGroup")
    public Result getFeeItemListByRptGroup(FeeItemPageParam feeItemPageParam) {
        return labFeeItemService.getFeeItemListByRptGroup(feeItemPageParam);
    }

    @ApiOperation("获取申请项目分页")
    @GetMapping("/findFeeItemPageList")
    public Result findFeeItemPageList(FeeItemPageParam feeItemPageParam) {
        return labFeeItemService.findFeeItemPageList(feeItemPageParam);
    }

    @ApiOperation("获取报告单元关联申请项目")
    @GetMapping("/findRptFeeItemList")
    public Result findRptFeeItemList(FeeItemPageParam feeItemPageParam) {
        return labFeeItemService.findRptFeeItemList(feeItemPageParam);
    }


    @ApiOperation("根据分管类别获取申请项目")
    @GetMapping("/findFeeItemListByBarCodeId/{barcodeNo}")
    public Result findFeeItemListByBarCodeId(@PathVariable("barcodeNo") String barcodeNo) {
        return labFeeItemService.findFeeItemListByBarCodeId(barcodeNo);
    }

    @ApiOperation("添加申请项目")
    @PostMapping("/addFeeItem")
    @LogDetail(requestParam ="addFeeItem",operationType = OperationType.INSERT, module = "申请项目",content = "增加【feeName】项目信息", businessName = "feeName")
    public Result addApplyItem(@RequestBody AddFeeItemParam addFeeItemParam) {
        return labFeeItemService.addApplyItem(addFeeItemParam);
    }

    @ApiOperation("编辑申请项目")
    @PostMapping("/editFeeItem")
    @LogDetail(requestParam ="editFeeItem",operationType = OperationType.UPDATE, module = "申请项目",content = "编辑【feeName】项目信息", businessName = "feeName")
    public Result editApplyItem(@RequestBody AddFeeItemParam addFeeItemParam) {
        return labFeeItemService.editApplyItem(addFeeItemParam);
    }

    @ApiOperation("根据id申请项目")
    @PostMapping("/deleteFeeItem")
    @LogDetail(requestParam ="deleteFeeItem",operationType = OperationType.DELETE, module = "申请项目",content = "删除【feeName】项目信息", businessName = "feeName")
    public Result deleteApplyItem(@RequestBody AddFeeItemParam addFeeItemParam) {
        return labFeeItemService.deleteApplyItem(addFeeItemParam);
    }

    @ApiOperation("获取申请项目扩展属性结构数据")
    @GetMapping("/findFeeCodeExtenFieldsValueList")
    public Result findFeeCodeExtenFieldsValueList(ExtenFieldsValuePageRequestDto pageParam) {
        return labFeeItemService.findFeeCodeExtenFieldsValueList(pageParam);
    }
}
